const Sequelize = require('sequelize');
const Op = Sequelize.Op;
module.exports = (db, DataTypes) => {
  return db.define('Equipment', {
    name: DataTypes.STRING,
    description: DataTypes.STRING,
    scope: DataTypes.STRING,
    radios: DataTypes.STRING,  // 无有 或者 正常异常
    type: DataTypes.STRING, // ['oracle', 'bnw', 'bhics', 'bhics2', 'it', 'workstation']
    label: DataTypes.STRING, // 白 / 夜
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE,
    state: {   // 设备是否有故障
      type: DataTypes.BOOLEAN,
      defaultValue: true,
    },
    isStop: {  // 是否被停用
      type: DataTypes.BOOLEAN,
      defaultValue: false,
    },
    // todo: defaultScope做了什么魔法？没有，defaultScope完全是线下的
    // todo: 难道还能deleted是个特殊的字段？好像确实是？真的是！真的是！真的是！
    active: {
      type: DataTypes.BOOLEAN,
      defaultValue: true,
    }
  }, {
    defaultScope: {
      where: {
        active: true,
        isStop: false,
      }
    },
    scopes: {
      all: {
        where: {
          [Op.or] : [{
            active: true
          },{
            active: false,
          },{
            isStop: true,
          },{
            isStop: false,
          }]
        },
      },
      includeStop: {
        where: {
          active: true,
          [Op.or]: [{
            isStop: true,
          },{
            isStop: false,
          }]
        }
      },
    },
    associate(models) {
      models.Equipment.hasMany(models.EquipmentAttribute);
    }
  })
};
